using System.Collections.Generic;
using System.Threading.Tasks;
using RawRestructure.Models;
using RawRestructure.Enums;

namespace RawRestructure.Services.Interfaces;

/// <summary>
/// 文件分析服务接口
/// </summary>
public interface IFileAnalysisService
{
    /// <summary>
    /// 异步分析目录中的RAW文件
    /// </summary>
    /// <param name="directoryPath">目录路径</param>
    /// <returns>图像信息</returns>
    Task<ImageInfo> AnalyzeDirectoryAsync(string directoryPath);

    /// <summary>
    /// 获取RAW图像文件列表
    /// </summary>
    /// <param name="directoryPath">目录路径</param>
    /// <returns>RAW图像文件信息列表</returns>
    List<RawImageInfo> GetRawImageFiles(string directoryPath);

    /// <summary>
    /// 确定图像模式
    /// </summary>
    /// <param name="paCount">正位图数量</param>
    /// <param name="latCount">侧位图数量</param>
    /// <param name="hasPairedImages">是否存在相同序号的正位和侧位图像</param>
    /// <returns>图像模式</returns>
    ImageMode DetermineImageMode(int paCount, int latCount, bool hasPairedImages = false);

    /// <summary>
    /// 计算最小数量
    /// </summary>
    /// <param name="paCount">正位图数量</param>
    /// <param name="latCount">侧位图数量</param>
    /// <param name="mode">图像模式</param>
    /// <returns>最小数量</returns>
    int CalculateMinCount(int paCount, int latCount, ImageMode mode);
} 